Docker Swarm
再スケジュールポリシーはデフォルトで off になっている
環境変数: reschedule
ラベル: com.docker.swarm.reschedule-policy
Examples
ここで登場するdocker-machineコマンドは、クラスタするホストを切り替えるという意味で使っています。
3VMを作成
code:bash
docker-machine create -d virtualbox manager # 192.168.0.23
docker-machine create -d virtualbox worker1 # 192.168.0.22
docker-machine create -d virtualbox worker2 # 192.168.0.21
managerに接続してswarmをActiveにする
code:bash
eval $(docker-machine env manager)
docker swarm init --advertise-addr 192.168.0.23 # 他のノードと疎通が取れるネットワークにある自IPアドレス
# docker swarm join ~ というコマンドが出力されるので控えておく。以下を実行すれば確認できる。
# docker swarm join-token worker
docker info # Swarm: inactive -> Swarm: active になっている
docker node ls # managerだけ表示される
workerを追加
code:bash
eval $(docker-machine env worker1)
docker swarm join --token SWMTKN-1-5kbeja5i47xh8jlhoxx4a41vhh893ucclne9dh8k59cgncybq0-c97zzoc9cjap2gplv2g35a6d9 192.168.0.23:2377
eval $(docker-machine env worker2)
docker swarm join --token SWMTKN-1-5kbeja5i47xh8jlhoxx4a41vhh893ucclne9dh8k59cgncybq0-c97zzoc9cjap2gplv2g35a6d9 192.168.0.23:2377
nodeに追加された事の確認
code:bash
eval $(docker-machine env manager)
docker info # managers:1, nodes:3
docker node ls # manager, worker1, worker2
サービスのCRUD
code:bash
docker service create --replicas 3 --name helloworld alpine ping docker.com
docker service list
docker service inspect helloworld --pretty # --prettyは人間が見やすい形式で出力する docker service ps helloworld
docker service scale helloworld=5
docker service ps helloworld # 分散されて実行
docker service update --image redis:3.0.7 helloworld
docker service rm helloworld
node状態変更
code:bash
docker node update --availability drain worker3
docker node update --availability active worker3
Routing
code:bash
docker service create --name my-web -p 8080:80 --replicas 3 nginx
docker stack deploy -c docker-compose.yml ${service}でDocker Composeファイルに基づいてSwarmが使用できる Sample: 以下のコマンドを実行するして、以下のdokcer-composeをSwarmで立ち上げる
code:bash
code:docker-compose.yml
version: "3"
services:
lb:
image: haproxy
ports:
- "433:433"
web:
image: nginx
deploy:
replicas: 2
Reference
Old Docs of ja
Depreciated Docker Image